{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<style>\n",
       "@import url('http://fonts.googleapis.com/css?family=Source+Code+Pro');\n",
       "@import url('http://fonts.googleapis.com/css?family=Vollkorn');\n",
       "@import url('http://fonts.googleapis.com/css?family=Arimo');\n",
       "@import url('http://fonts.googleapis.com/css?family=Fira_sans');\n",
       "\n",
       "    div.cell{\n",
       "        width: 900px;\n",
       "        margin-left: 0% !important;\n",
       "        margin-right: auto;\n",
       "    }\n",
       "    div.text_cell code {\n",
       "        background: transparent;\n",
       "        color: #000000;\n",
       "        font-weight: 600;\n",
       "        font-size: 11pt;\n",
       "        font-style: bold;\n",
       "        font-family:  'Source Code Pro', Consolas, monocco, monospace;\n",
       "   }\n",
       "    h1 {\n",
       "        font-family: 'Open sans',verdana,arial,sans-serif;\n",
       "\t}\n",
       "\t\n",
       "    div.input_area {\n",
       "        background: #F6F6F9;\n",
       "        border: 1px solid #586e75;\n",
       "    }\n",
       "\n",
       "    .text_cell_render h1 {\n",
       "        font-weight: 200;\n",
       "        font-size: 30pt;\n",
       "        line-height: 100%;\n",
       "        color:#c76c0c;\n",
       "        margin-bottom: 0.5em;\n",
       "        margin-top: 1em;\n",
       "        display: block;\n",
       "        white-space: wrap;\n",
       "        text-align: left;\n",
       "    } \n",
       "    h2 {\n",
       "        font-family: 'Open sans',verdana,arial,sans-serif;\n",
       "        text-align: left;\n",
       "    }\n",
       "    .text_cell_render h2 {\n",
       "        font-weight: 200;\n",
       "        font-size: 16pt;\n",
       "        font-style: italic;\n",
       "        line-height: 100%;\n",
       "        color:#c76c0c;\n",
       "        margin-bottom: 0.5em;\n",
       "        margin-top: 1.5em;\n",
       "        display: block;\n",
       "        white-space: wrap;\n",
       "        text-align: left;\n",
       "    } \n",
       "    h3 {\n",
       "        font-family: 'Open sans',verdana,arial,sans-serif;\n",
       "    }\n",
       "    .text_cell_render h3 {\n",
       "        font-weight: 200;\n",
       "        font-size: 14pt;\n",
       "        line-height: 100%;\n",
       "        color:#d77c0c;\n",
       "        margin-bottom: 0.5em;\n",
       "        margin-top: 2em;\n",
       "        display: block;\n",
       "        white-space: wrap;\n",
       "        text-align: left;\n",
       "    }\n",
       "    h4 {\n",
       "        font-family: 'Open sans',verdana,arial,sans-serif;\n",
       "    }\n",
       "    .text_cell_render h4 {\n",
       "        font-weight: 100;\n",
       "        font-size: 14pt;\n",
       "        color:#d77c0c;\n",
       "        margin-bottom: 0.5em;\n",
       "        margin-top: 0.5em;\n",
       "        display: block;\n",
       "        white-space: nowrap;\n",
       "    }\n",
       "    h5 {\n",
       "        font-family: 'Open sans',verdana,arial,sans-serif;\n",
       "    }\n",
       "    .text_cell_render h5 {\n",
       "        font-weight: 200;\n",
       "        font-style: normal;\n",
       "        color: #1d3b84;\n",
       "        font-size: 16pt;\n",
       "        margin-bottom: 0em;\n",
       "        margin-top: 0.5em;\n",
       "        display: block;\n",
       "        white-space: nowrap;\n",
       "    }\n",
       "    div.text_cell_render{\n",
       "        font-family: 'Fira sans', verdana,arial,sans-serif;\n",
       "        line-height: 125%;\n",
       "        font-size: 115%;\n",
       "        text-align:justify;\n",
       "        text-justify:inter-word;\n",
       "    }\n",
       "    div.output_subarea.output_text.output_pyout {\n",
       "        overflow-x: auto;\n",
       "        overflow-y: scroll;\n",
       "        max-height: 50000px;\n",
       "    }\n",
       "    div.output_subarea.output_stream.output_stdout.output_text {\n",
       "        overflow-x: auto;\n",
       "        overflow-y: scroll;\n",
       "        max-height: 50000px;\n",
       "    }\n",
       "    div.output_wrapper{\n",
       "        margin-top:0.2em;\n",
       "        margin-bottom:0.2em;\n",
       "}\n",
       "\n",
       "    code{\n",
       "      font-size: 70%;\n",
       "    }\n",
       "    .rendered_html code{\n",
       "    background-color: transparent;\n",
       "    }\n",
       "    ul{\n",
       "        margin: 2em;\n",
       "    }\n",
       "    ul li{\n",
       "        padding-left: 0.5em; \n",
       "        margin-bottom: 0.5em; \n",
       "        margin-top: 0.5em; \n",
       "    }\n",
       "    ul li li{\n",
       "        padding-left: 0.2em; \n",
       "        margin-bottom: 0.2em; \n",
       "        margin-top: 0.2em; \n",
       "    }\n",
       "    ol{\n",
       "        margin: 2em;\n",
       "    }\n",
       "    ol li{\n",
       "        padding-left: 0.5em; \n",
       "        margin-bottom: 0.5em; \n",
       "        margin-top: 0.5em; \n",
       "    }\n",
       "    ul li{\n",
       "        padding-left: 0.5em; \n",
       "        margin-bottom: 0.5em; \n",
       "        margin-top: 0.2em; \n",
       "    }\n",
       "    a:link{\n",
       "       font-weight: bold;\n",
       "       color:#447adb;\n",
       "    }\n",
       "    a:visited{\n",
       "       font-weight: bold;\n",
       "       color: #1d3b84;\n",
       "    }\n",
       "    a:hover{\n",
       "       font-weight: bold;\n",
       "       color: #1d3b84;\n",
       "    }\n",
       "    a:focus{\n",
       "       font-weight: bold;\n",
       "       color:#447adb;\n",
       "    }\n",
       "    a:active{\n",
       "       font-weight: bold;\n",
       "       color:#447adb;\n",
       "    }\n",
       "    .rendered_html :link {\n",
       "       text-decoration: underline; \n",
       "    }\n",
       "    .rendered_html :hover {\n",
       "       text-decoration: none; \n",
       "    }\n",
       "    .rendered_html :visited {\n",
       "      text-decoration: none;\n",
       "    }\n",
       "    .rendered_html :focus {\n",
       "      text-decoration: none;\n",
       "    }\n",
       "    .rendered_html :active {\n",
       "      text-decoration: none;\n",
       "    }\n",
       "    .warning{\n",
       "        color: rgb( 240, 20, 20 )\n",
       "    } \n",
       "    hr {\n",
       "      color: #f3f3f3;\n",
       "      background-color: #f3f3f3;\n",
       "      height: 1px;\n",
       "    }\n",
       "    blockquote{\n",
       "      display:block;\n",
       "      background: #fcfcfc;\n",
       "      border-left: 5px solid #c76c0c;\n",
       "      font-family: 'Open sans',verdana,arial,sans-serif;\n",
       "      width:680px;\n",
       "      padding: 10px 10px 10px 10px;\n",
       "      text-align:justify;\n",
       "      text-justify:inter-word;\n",
       "      }\n",
       "      blockquote p {\n",
       "        margin-bottom: 0;\n",
       "        line-height: 125%;\n",
       "        font-size: 100%;\n",
       "      }\n",
       "</style>\n",
       "<script>\n",
       "    MathJax.Hub.Config({\n",
       "                        TeX: {\n",
       "                           extensions: [\"AMSmath.js\"]\n",
       "                           },\n",
       "                tex2jax: {\n",
       "                    inlineMath: [ ['$','$'], [\"\\\\(\",\"\\\\)\"] ],\n",
       "                    displayMath: [ ['$$','$$'], [\"\\\\[\",\"\\\\]\"] ]\n",
       "                },\n",
       "                displayAlign: 'center', // Change this to 'center' to center equations.\n",
       "                \"HTML-CSS\": {\n",
       "                    scale:100,\n",
       "                        availableFonts: [],\n",
       "                        preferredFont:null,\n",
       "                        webFont: \"TeX\",\n",
       "                    styles: {'.MathJax_Display': {\"margin\": 4}}\n",
       "                }\n",
       "        });\n",
       "</script>\n"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "execution_count": 1,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# format the book\n",
    "%matplotlib inline\n",
    "import sys\n",
    "from __future__ import division, print_function\n",
    "import sys\n",
    "sys.path.insert(0,'../code')\n",
    "import book_format\n",
    "book_format.load_style('../code')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# More Estimation \n",
    "\n",
    "\n",
    "## The Euro problem\n",
    "\n",
    "In <span>*Information Theory, Inference, and Learning\n",
    "Algorithms*</span>, David MacKay poses this problem:\n",
    "\n",
    "> A statistical statement appeared in \\`\\`The Guardian\" on Friday\n",
    "> January 4, 2002:\n",
    ">\n",
    "> > When spun on edge 250 times, a Belgian one-euro coin came up heads\n",
    "> > 140 times and tails 110. ‘It looks very suspicious to me,’ said\n",
    "> > Barry Blight, a statistics lecturer at the London School of\n",
    "> > Economics. ‘If the coin were unbiased, the chance of getting a\n",
    "> > result as extreme as that would be less than 7%.’\n",
    ">\n",
    "> But do these data give evidence that the coin is biased rather than\n",
    "> fair?\n",
    "\n",
    "To answer that question, we’ll proceed in two steps. The first is to\n",
    "estimate the probability that the coin lands face up. The second is to\n",
    "evaluate whether the data support the hypothesis that the coin is\n",
    "biased.\n",
    "\n",
    "You can download the code in this section from\n",
    "<http://thinkbayes.com/euro.py>. For more information see\n",
    "Section [download].\n",
    "\n",
    "Any given coin has some probability, $x$, of landing heads up when spun\n",
    "on edge. It seems reasonable to believe that the value of $x$ depends on\n",
    "some physical characteristics of the coin, primarily the distribution of\n",
    "weight.\n",
    "\n",
    "If a coin is perfectly balanced, we expect $x$ to be close to 50%, but\n",
    "for a lopsided coin, $x$ might be substantially different. We can use\n",
    "Bayes’s theorem and the observed data to estimate $x$.\n",
    "\n",
    "Let’s define 101 hypotheses, where $H_x$ is the hypothesis that the\n",
    "probability of heads is $x$%, for values from 0 to 100. I’ll start with\n",
    "a uniform prior where the probability of $H_x$ is the same for all $x$.\n",
    "We’ll come back later to consider other priors.\n",
    "\n",
    "[Posterior distribution for the Euro problem on a uniform\n",
    "prior.](figs/euro1.pdf)\n",
    "\n",
    "[fig.euro1]\n",
    "\n",
    "The likelihood function is relatively easy: If $H_x$ is true, the\n",
    "probability of heads is $x/100$ and the probability of tails is $1-\n",
    "x/100$."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "from thinkbayes import Suite\n",
    "class Euro(Suite):\n",
    "\n",
    "    def Likelihood(self, data, hypo):\n",
    "        x = hypo\n",
    "        if data == 'H':\n",
    "            return x/100.0\n",
    "        else:\n",
    "            return 1 - x/100.0"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Here’s the code that makes the suite and updates it:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "suite = Euro(range(0, 101))\n",
    "dataset = 'H' * 140 + 'T' * 110\n",
    "\n",
    "for data in dataset:\n",
    "    suite.Update(data)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The result may be plotted with:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\nQ4Zo5syZWr58eZP2q1ev1pIlS3T69GmFhoZKkpYvX641a9bo5MmTkqTHH39c7733ng4ePOg+7l//\n9V+1f/9+7dixw+t85eXl7s9RUVFXeYvoLnbvblgrOT093eBK4M8CoZ9U11TqcNHehsB+5G+q8Qjs\njfpFxmn2tMeUYhliQIVdn5H95NDJz/XmllU6W2732m8yBSklLk3Xp9ykYSmjNSAuTeYgc6fXh0sC\n4fsJjNURGbbVkfe6ujrl5+dr8eLFXvunTJminTt3NnvMrl27NHHiRHdwl6SpU6fqySef1PHjx5WS\nkqJdu3ZpypQpXsdNnTpVr776qhwOh8xmviEB6FocTodq6qpVU1uti7UXVXXxvErKbQ1/ymzuz5UX\nK654jtjoRN08ZILuGP0thYf17MTq0VmGJN+oJd9fqf/99A1tK/hALpdTkuRyOXXMdlDHbAf14V83\nKDysp1Ljh6lP7xhF9YxWVK9+iurZV3169VVUz76K6NFbJpPJ4LsB0N5aDe8lJSVyOByKi4vz2h8X\nF6ctW7Y0e4zNZlNycnKT9i6XSzabTSkpKbLZbMrMzGzSpr6+XiUlJU2u1+jl//k/rZWMbqq8rOGn\n2/ziDw2uBP6srKxMkpR/qmk/cemyX0R6/GLS1fh1l+ur/zZsu77adjmdcjgdcjodcri++q/TIYez\nXjW1F1VTV626+to21dy/T4JGp2VodFqGEmJSCGTdQGhImGZ8ba5uHX6nPju8UweOf6YT9n969dHq\nmkrtO9by21mDzSEKCQ5ViDlUIcGhCg5u2DYHBctkMinIFCSTKeir/zZs66v+ZVLjf9VkX7O6Ybfk\n3x00umXYHRqdltEp1wq41WbuvX2+0SUAgGHOn2cd8M6QlpYmyftX3kboGRKtCcPv0oThdxlaB4DW\nddb3i1afcIqJiZHZbJbd7j33zm63y2KxNHuMxWJptr3JZHIfc6U2wcHBiomJuaqbAAAAALqDVsN7\nSEiIxowZo9zcXK/9ubm5ysho/tcD48aN0/bt21Vbe+lXxJs3b1ZCQoJSUlLcbS4/5+bNm5Wens58\ndwAAAKAZPq028/bbb+vBBx/UqlWrlJGRodWrV2vdunXav3+/kpKStGTJEv3973/XRx99JKnh17rX\nX3+9Jk2apCeeeEIHDx7UnDlz9PTTTys7O1tSw1KRN9xwgx5++GH96Ec/Ul5enh555BG99dZb+s53\n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\ngg==\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x2512839e5f8>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt  \n",
    "xs = list(range(0,100))\n",
    "ps = suite.Probs(xs)\n",
    "plt.plot(xs, ps);"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Summarizing the posterior\n",
    "\n",
    "Again, there are several ways to summarize the posterior distribution.\n",
    "One option is to find the most likely value in the posterior\n",
    "distribution. `thinkbayes` provides a function that does that:\n",
    "\n",
    "```python\n",
    "def MaximumLikelihood(pmf):\n",
    "    \"\"\"Returns the value with the highest probability.\"\"\"\n",
    "    prob, val = max((prob, val) for val, prob in pmf.Items())\n",
    "    return val\n",
    "```"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "56"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "suite.MaximumLikelihood()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "In this case the result is 56, which is also the observed percentage of\n",
    "heads, $140/250 = 56\\%$. So that suggests (correctly) that the observed\n",
    "percentage is the maximum likelihood estimator for the population.\n",
    "\n",
    "We might also summarize the posterior by computing the mean and median:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Mean 55.952380952380956\n",
      "Median 56\n"
     ]
    }
   ],
   "source": [
    "import thinkbayes\n",
    "print('Mean', suite.Mean())\n",
    "print('Median', thinkbayes.Percentile(suite, 50))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Finally, we can compute a credible interval:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "CI (51, 61)\n"
     ]
    }
   ],
   "source": [
    "print('CI', thinkbayes.CredibleInterval(suite, 90))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Now, getting back to the original question, we would like to know\n",
    "whether the coin is fair. We observe that the posterior credible\n",
    "interval does not include 50%, which suggests that the coin is not fair.\n",
    "\n",
    "But that is not exactly the question we started with. MacKay asked, “ Do\n",
    "these data give evidence that the coin is biased rather than fair?” To\n",
    "answer that question, we will have to be more precise about what it\n",
    "means to say that data constitute evidence for a hypothesis. And that is\n",
    "the subject of the next chapter.\n",
    "\n",
    "But before we go on, I want to address one possible source of confusion.\n",
    "Since we want to know whether the coin is fair, it might be tempting to\n",
    "ask for the probability that <span>x</span> is 50%:\n",
    "\n",
    "```python\n",
    "print(suite.Prob(50))\n",
    "```\n",
    "\n",
    "The result is 0.021, but that value is almost meaningless. The decision\n",
    "to evaluate 101 hypotheses was arbitrary; we could have divided the\n",
    "range into more or fewer pieces, and if we had, the probability for any\n",
    "given hypothesis would be greater or less."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Swamping the priors\n",
    "\n",
    "We started with a uniform prior, but that might not be a good choice. I\n",
    "can believe that if a coin is lopsided, $x$ might deviate substantially\n",
    "from 50%, but it seems unlikely that the Belgian Euro coin is so\n",
    "imbalanced that $x$ is 10% or 90%.\n",
    "\n",
    "It might be more reasonable to choose a prior that gives higher\n",
    "probability to values of $x$ near 50% and lower probability to extreme\n",
    "values.\n",
    "\n",
    "As an example, I constructed a triangular prior. Here’s the code that constructs the prior:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "def TrianglePrior(suite):\n",
    "    for x in range(0, 51):\n",
    "        suite.Set(x, x)\n",
    "    for x in range(51, 101):\n",
    "        suite.Set(x, 100-x) \n",
    "    suite.Normalize()\n",
    "    return suite"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x25128551080>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "xs = list(range(0,100))\n",
    "\n",
    "ps = thinkbayes.MakeUniformPmf(0, 100, 101).Probs(xs)\n",
    "plt.plot(xs, ps, label='uniform', color='k')\n",
    "\n",
    "suite = TrianglePrior(Euro())\n",
    "ps = suite.Probs(xs)\n",
    "plt.plot(xs, ps, label='triangle');\n",
    "plt.legend();"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "This shows the result (and the uniform prior for\n",
    "comparison). Updating this prior with the same dataset yields the\n",
    "posterior distribution shown in Figure [fig.euro3]. Even with\n",
    "substantially different priors, the posterior distributions are very\n",
    "similar. The medians and the credible intervals are identical; the means\n",
    "differ by less than 0.5%."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAu8AAAEWCAYAAADW9nkdAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3XlcU1f6P/BPEhIIIMgiAWQTRUWxasEVrdQRrEv30e6t\nUDvlV+uIdrFO7Wr5ar92qrUj6nSsVu0ofqdWp622otVWpM4UWmxV3KqiQBJkFWRP8vuDck1kCxi4\nCfm8X6++5uZw7r1P8Ex4OJz7HInBYDCAiIiIiIisnlTsAIiIiIiIyDxM3omIiIiIbASTdyIiIiIi\nG8HknYiIiIjIRjB5JyIiIiKyEUzeiYiIiIhsBJN3IiIiIiIbYXbynpKSgtDQUCiVSkRFRSE9Pb3V\nvrW1tYiPj8fw4cOhUCgwefLkNq+dnp4OuVyO2267zfzIiYiIiIjsjFnJe2pqKpKSkrB06VJkZ2dj\n/PjxmDZtGvLy8lrsr9PpoFQqMX/+fMycObPNa5eVleGpp57ClClTOh49EREREZEdkZizw+rYsWMx\nYsQIrF+/XmgbOHAgZs2aheTk5DbPnT9/Pk6ePIlvv/22xa8/+OCDGDFiBPR6PT777DP88ssvHXwL\nRERERET2od2Z9/r6emRlZSE2NtakPS4uDhkZGbd085SUFBQWFmLp0qW3dB0iIiIiInvQbvJeVFQE\nnU4HlUpl0q5SqaDRaDp9419//RXLli3Dp59+ColE0unrEBERERHZCwcxblpXV4eHH34Y7733HoKC\nggAAba3eKS8v767QiIiIiIgszt3d3SLXaTd59/b2hkwmg1arNWnXarXw9fXt1E3VajVycnIQHx+P\nOXPmAAD0ej0MBgMUCgX27t3LB1iJiIiIiG7S7rIZuVyOyMhIpKWlmbSnpaUhOjq6Uzft27cvTpw4\ngezsbBw/fhzHjx9HYmIiwsLCcPz4cYwfP75T1yUiIiIi6snMWjazaNEiPPnkkxg1ahSio6Oxbt06\nqNVqJCYmAgCWLFmCH3/8EQcOHBDOycnJQW1tLYqKilBZWYnjx48DAIYPHw4HBwcMGTLE5B4+Pj5w\ndHREeHh4m7FY6k8O1PNkZmYCAKKiokSOhKwZxwmZg+OEzMFxQu3piqXfZiXvs2fPRklJCZKTk6FW\nqxEREYF9+/YhICAAAKDRaHDx4kWTc6ZPn47Lly8Lr0eOHAmJRAKdTmfB8ImIiIiI7IdZdd7FZvxb\nC2feqTWcASFzcJyQOThOyBwcJ9SershhzdphlYiIiIiIxMfknYiIiIjIRjB5JyIiIiKyEaJs0kRE\nRETUExkMBtTX10Ov14sdCnUDhUIBqbR758KZvBMRERFZgMFgQE1NDRQKBeRyOSQSidghURdq+vd2\ncnLq1n9rLpshIiIisoD6+nooFArIZDIm7nZAIpFAoVCgrq6uW+/L5J2IiIjIAvR6fbcvoSBxyWQy\ndHfVdY4wIiIiIgvhjDt1NSbvREREREQ2gsk7EREREZGNYPJORERERN1u8+bNkEqluHz5skl7amoq\nhgwZAkdHR3h6eooUnfViqUgiIiIi6nYSiaTZMwKXLl3CE088gcmTJ2Px4sVwcXERKTrrxeSdiIiI\niLrdk08+iUceeQQKhUJoO3r0KHQ6Hd577z1ERESIGJ314rIZIiIiIup2TXXSjWm1WgCAm5ubxe5T\nXV1tsWtZAybvRERk9QqKLuHXC/+FXq8TOxQiuzVnzhz069evWfubb75pUt9eKpXiueeew549ezBs\n2DA4OTkhIiIC33zzjcl5N69579evH1588UUAQEhICKRSKd5++22h//r16zFs2DAolUr4+fkhMTER\npaWlJteMiYnBkCFDcPz4cdx5551wdXXFvHnzTL524sQJxMTEwMXFBf3798fOnTsBAOnp6Rg3bhyc\nnZ0xePBg7N+/3wLfNctj8k5ERFbt8M9f4N1PF+KjL/4He49tFzscIrvV0hr11tozMjLw/PPP45FH\nHsHKlStRW1uLP/7xjybJ9s3nffDBB3jkkUeE423btuGBBx4AALzzzjt47rnn4Ofnh/feew+PPPII\nPv74Y/zhD39AfX29yTVLS0tx1113YejQoVi9ejWmT58ufK2srAwzZ87E6NGjsXLlSri4uODxxx9H\namoqZs2ahenTp+Pdd99FVVUVZs+ejYqKCst9Ay2Ea96JiMgq6fU67D6yGYezvxDaDmd/icmR98HZ\n0VXEyIioPadPn0ZOTo4wUx8TE4Phw4dj+/bteO6551o855577sG5c+ewY8cO3HvvvQgKCgIAFBUV\n4Z133kFsbCy+/vprIeEfPnw44uPj8dFHH5lcs7CwEGvWrBFm3I1ptVps3boVjz76KABgypQpGDx4\nMB577DGkp6dj7NixAIDBgwdj6tSp+L//+z8kJCRY7htjAZx5JyIiq1PXUItNe1eaJO4AUFdfgx9O\n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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x251287e3dd8>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "for data in dataset:\n",
    "    suite.Update(data)\n",
    "    \n",
    "ps = thinkbayes.MakeUniformPmf(0, 100, 101).Probs(xs)\n",
    "plt.plot(xs, ps, label='uniform', color='k')\n",
    "\n",
    "ps = suite.Probs(xs)\n",
    "plt.plot(xs, ps, label='triangle');\n",
    "plt.legend();"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "This is an example of **swamping the priors** with enough\n",
    "data, people who start with different priors will tend to converge on\n",
    "the same posterior."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Optimization\n",
    "\n",
    "The code I have shown so far is meant to be easy to read, but it is not\n",
    "very efficient. In general, I like to develop code that is demonstrably\n",
    "correct, then check whether it is fast enough for my purposes. If so,\n",
    "there is no need to optimize. For this example, if we care about run\n",
    "time, there are several ways we can speed it up.\n",
    "\n",
    "The first opportunity is to reduce the number of times we normalize the\n",
    "suite. In the original code, we call `Update` once for each spin.\n",
    "\n",
    "```python\n",
    "dataset = 'H' * heads + 'T' * tails\n",
    "\n",
    "for data in dataset:\n",
    "    suite.Update(data)\n",
    "```\n",
    "\n",
    "And here’s what `Update` looks like:\n",
    "\n",
    "```python\n",
    "def Update(self, data):\n",
    "    for hypo in self.Values():\n",
    "        like = self.Likelihood(data, hypo)\n",
    "        self.Mult(hypo, like)\n",
    "    return self.Normalize()\n",
    "```\n",
    "\n",
    "Each update iterates through the hypotheses, then calls `Normalize`,\n",
    "which iterates through the hypotheses again. We can save some time by\n",
    "doing all of the updates before normalizing.\n",
    "\n",
    "`Suite` provides a method called `UpdateSet` that does exactly that.\n",
    "Here it is:\n",
    "\n",
    "```python\n",
    "def UpdateSet(self, dataset):\n",
    "    for data in dataset:\n",
    "        for hypo in self.Values():\n",
    "            like = self.Likelihood(data, hypo)\n",
    "            self.Mult(hypo, like)\n",
    "    return self.Normalize()\n",
    "```\n",
    "\n",
    "And here’s how we can invoke it:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2.38031546401283e-75"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "heads, tails = 140, 110\n",
    "\n",
    "dataset = 'H' * heads + 'T' * tails\n",
    "suite.UpdateSet(dataset)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "This optimization speeds things up, but the run time is still\n",
    "proportional to the amount of data. We can speed things up even more by\n",
    "rewriting `Likelihood` to process the entire dataset, rather than one\n",
    "spin at a time.\n",
    "\n",
    "In the original version, `data` is a string that encodes either heads or\n",
    "tails:\n",
    "\n",
    "```python\n",
    "def Likelihood(self, data, hypo):\n",
    "    x = hypo / 100.0\n",
    "    if data == 'H':\n",
    "        return x\n",
    "    else:\n",
    "        return 1-x\n",
    "```\n",
    "\n",
    "As an alternative, we could encode the dataset as a tuple of two\n",
    "integers: the number of heads and tails. In that case `Likelihood` looks\n",
    "like this:\n",
    "\n",
    "```python\n",
    "def Likelihood(self, data, hypo):\n",
    "    x = hypo / 100.0\n",
    "    heads, tails = data\n",
    "    like = x**heads * (1-x)**tails\n",
    "    return like\n",
    "```\n",
    "\n",
    "And then we can call `Update` like this:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.4413448096175153"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "heads, tails = 140, 110\n",
    "suite.Update((heads, tails))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Since we have replaced repeated multiplication with exponentiation, this\n",
    "version takes the same time for any number of spins."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## The beta distribution\n",
    "\n",
    "There is one more optimization that solves this problem even faster.\n",
    "\n",
    "So far we have used a Pmf object to represent a discrete set of values\n",
    "for $x$. Now we will use a continuous distribution,\n",
    "specifically the beta distribution (see\n",
    "<http://en.wikipedia.org/wiki/Beta_distribution>).\n",
    "\n",
    "The beta distribution is defined on the interval from 0 to 1 (including\n",
    "both), so it is a natural choice for describing proportions and\n",
    "probabilities. But wait, it gets better.\n",
    "\n",
    "It turns out that if you do a Bayesian update with a binomial likelihood\n",
    "function, as we did in the previous section, the beta distribution is a\n",
    "<span>**conjugate prior**</span>. That means that if the prior\n",
    "distribution for <span>x</span> is a beta distribution, the posterior is\n",
    "also a beta distribution. But wait, it gets even better.\n",
    "\n",
    "The shape of the beta distribution depends on two parameters, written\n",
    "$\\alpha$ and $\\beta$, or <span>alpha</span> and <span>beta</span>. If\n",
    "the prior is a beta distribution with parameters <span>alpha</span> and\n",
    "<span>beta</span>, and we see data with <span>h</span> heads and\n",
    "<span>t</span> tails, the posterior is a beta distribution with\n",
    "parameters <span>alpha+h</span> and <span>beta+t</span>. In other words,\n",
    "we can do an update with two additions.\n",
    "\n",
    "So that’s great, but it only works if we can find a beta distribution\n",
    "that is a good choice for a prior. Fortunately, for many realistic\n",
    "priors there is a beta distribution that is at least a good\n",
    "approximation, and for a uniform prior there is a perfect match. The\n",
    "beta distribution with <span>alpha=1</span> and <span>beta=1</span> is\n",
    "uniform from 0 to 1.\n",
    "\n",
    "Let’s see how we can take advantage of all this.\n",
    "<span>thinkbayes.py</span> provides a class that represents a beta\n",
    "distribution:\n",
    "\n",
    "```python\n",
    "class Beta(object):\n",
    "\n",
    "    def __init__(self, alpha=1, beta=1):\n",
    "        self.alpha = alpha\n",
    "        self.beta = beta\n",
    "```\n",
    "\n",
    "By default `__init__` makes a uniform distribution. <span>Update</span>\n",
    "performs a Bayesian update:\n",
    "\n",
    "```python\n",
    "def Update(self, data):\n",
    "    heads, tails = data\n",
    "    self.alpha += heads\n",
    "    self.beta += tails\n",
    "```\n",
    "\n",
    "`data` is a pair of integers representing the number of heads\n",
    "and tails.\n",
    "\n",
    "So we have yet another way to solve the Euro problem:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.5595238095238095\n"
     ]
    }
   ],
   "source": [
    "beta = thinkbayes.Beta()\n",
    "beta.Update((140, 110))\n",
    "print(beta.Mean())"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "`Beta` provides `Mean,` which computes a simple\n",
    "function of `alpha` and `beta`:\n",
    "\n",
    "```python\n",
    "def Mean(self):\n",
    "    return float(self.alpha) / (self.alpha + self.beta)\n",
    "```\n",
    "\n",
    "For the Euro problem the posterior mean is 56%, which is the same result\n",
    "we got using Pmfs.\n",
    "\n",
    "`Beta` also provides `EvalPdf`, which evaluates\n",
    "the probability density function (PDF) of the beta distribution:\n",
    "\n",
    "```python\n",
    "def EvalPdf(self, x):\n",
    "    return x**(self.alpha-1) * (1-x)**(self.beta-1)\n",
    "```"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "111"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "beta.beta"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "3.192662744667652e-75"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "beta.EvalPdf(.55)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Finally, `Beta` provides `MakePmf`, which uses\n",
    "`EvalPdf` to generate a discrete approximation of the beta\n",
    "distribution."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x25128892cc0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "pmf = beta.MakePmf()\n",
    "xs = [i / 100. for i in range(101)]\n",
    "ps = pmf.Probs(xs)\n",
    "plt.plot(xs, ps);"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Discussion\n",
    "\n",
    "In this chapter we solved the same problem with two different priors and\n",
    "found that with a large dataset, the priors get swamped. If two people\n",
    "start with different prior beliefs, they generally find, as they see\n",
    "more data, that their posterior distributions converge. At some point\n",
    "the difference between their distribution is small enough that it has no\n",
    "practical effect.\n",
    "\n",
    "When this happens, it relieves some of the worry about objectivity that\n",
    "I discussed in the previous chapter. And for many real-world problems\n",
    "even stark prior beliefs can eventually be reconciled by data.\n",
    "\n",
    "But that is not always the case. First, remember that all Bayesian\n",
    "analysis is based on modeling decisions. If you and I do not choose the\n",
    "same model, we might interpret data differently. So even with the same\n",
    "data, we would compute different likelihoods, and our posterior beliefs\n",
    "might not converge.\n",
    "\n",
    "Also, notice that in a Bayesian update, we multiply each prior\n",
    "probability by a likelihood, so if $\\mathrm{p}(H)$ is 0,\n",
    "$\\mathrm{p}(H|D)$ is also 0, regardless of $D$. In the Euro\n",
    "problem, if you are convinced that $x$ is less than 50%, and you assign\n",
    "probability 0 to all other hypotheses, no amount of data will convince\n",
    "you otherwise.\n",
    "\n",
    "This observation is the basis of **Cromwell’s rule**, which\n",
    "is the recommendation that you should avoid giving a prior probability\n",
    "of 0 to any hypothesis that is even remotely possible (see\n",
    "<http://en.wikipedia.org/wiki/Cromwell's_rule>).\n",
    "\n",
    "Cromwell’s rule is named after Oliver Cromwell, who wrote, “I beseech\n",
    "you, in the bowels of Christ, think it possible that you may be\n",
    "mistaken.” For Bayesians, this turns out to be good advice (even if it’s\n",
    "a little overwrought)."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Exercises\n",
    "\n",
    "Suppose that instead of observing coin tosses directly, you measure the\n",
    "outcome using an instrument that is not always correct. Specifically,\n",
    "suppose there is a probability <span>y</span> that an actual heads is\n",
    "reported as tails, or actual tails reported as heads.\n",
    "\n",
    "Write a class that estimates the bias of a coin given a series of\n",
    "outcomes and the value of <span>y</span>.\n",
    "\n",
    "How does the spread of the posterior distribution depend on\n",
    "<span>y</span>?\n",
    "\n",
    "This exercise is inspired by a question posted by a “redditor” named\n",
    "dominosci on Reddit’s statistics “subreddit” at\n",
    "<http://reddit.com/r/statistics>.\n",
    "\n",
    "Reddit is an online forum with many interest groups called subreddits.\n",
    "Users, called redditors, post links to online content and other web\n",
    "pages. Other redditors vote on the links, giving an “upvote” to\n",
    "high-quality links and a “downvote” to links that are bad or irrelevant.\n",
    "\n",
    "A problem, identified by dominosci, is that some redditors are more\n",
    "reliable than others, and Reddit does not take this into account.\n",
    "\n",
    "The challenge is to devise a system so that when a redditor casts a\n",
    "vote, the estimated quality of the link is updated in accordance with\n",
    "the reliability of the redditor, and the estimated reliability of the\n",
    "redditor is updated in accordance with the quality of the link.\n",
    "\n",
    "One approach is to model the quality of the link as the probability of\n",
    "garnering an upvote, and to model the reliability of the redditor as the\n",
    "probability of correctly giving an upvote to a high-quality item.\n",
    "\n",
    "Write class definitions for redditors and links and an update function\n",
    "that updates both objects whenever a redditor casts a vote."
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.5.1"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 0
}
